import re
import time
import  pytest
import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import requests
import json
from urllib.parse import urlparse
#运行用例
pytest.main()
#生成报告
cmd="allure generate report-xml -o report --clean"
subprocess.call(cmd, shell=True)
#安装allure路径
allure_path = r'D:\allure\allure-2.32.0\bin\allure.bat'
# 启动Allure服务器并捕获输出
allure_command = [allure_path, 'serve', 'report-xml']
process = subprocess.Popen(allure_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 获取 Allure 服务器的进程 ID (PID)
pid = process.pid
print(f"Allure 服务器的进程 PID: {pid}")
# 等待服务器启动（根据实际情况调整时间）
time.sleep(5)
# 使用 process.terminate() 来杀死进程
process.terminate()
# 读取输出并搜索URL
url_pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
# 由于Allure可能不会立即打印URL，并且可能会持续输出日志，我们需要一个循环来读取输出
while True:
        line = process.stdout.readline()
        if not line:
            break
        # 搜索URL
        match = url_pattern.search(line)
        if match:
            allure_url = match.group(0)
            print(f"Found URL: {allure_url}")
            # 假设我们只关心第一个找到的URL，所以找到后可以退出循环
            break
        # 也可以处理stderr的输出，如果需要的话
        # err_line = process.stderr.readline()
        # if err_line:
        #     print(f"Error output: {err_line.strip()}")


# 解析 URL
parsed_url = urlparse(allure_url)
# 获取端口号
port = parsed_url.port



# 设置目标 URL
url = 'https://open.larksuite.com/open-apis/bot/v2/hook/74acaa05-b8a6-405b-bb57-c0ea7973f7a1'


# 设置请求头
headers = {
    'Content-Type': 'application/json',  # 设置请求体格式为 JSON
}

# 设置请求体（例如 JSON 格式的数据）
data ={"msg_type":"text","content":{"text":f"自动化报告：http://100.64.0.13:{port}/index.html"}}

# 发送 POST 请求，包含头部和请求体
response = requests.post(url, json=data, headers=headers)

# 输出响应的状态码
print("Status Code:", response.status_code)

# 输出响应内容
print("Response Text:", response.text)

# 如果响应是 JSON 格式，可以解析它
try:
    response_json = response.json()
    print("Response JSON:", response_json)
except ValueError:
    print("Response is not in JSON format.")



